package com.qwz.example;

import org.w3c.dom.Element;

/**
 * @author Qiuwuzhi
 * @version V1.0
 * @Description: 元素作为终结符对应的解释器
 * @Package com.qwz.example.ElementExpression
 * @date 2019/12/27 10:26
 */
public class ElementTerminalExpression extends ReadXmlExpression {

    /**
     * 元素的名称
     */
    private String eleName;

    public ElementTerminalExpression(String eleName) {
        this.eleName = eleName;
    }

    @Override
    public String[] interpreter(Context context) {
        //先取出上下文中的当前元素作为父级元素
        //查找到当前元素名称对应的xml元素，并设置回到上下文中
        Element preEle = context.getPreEle();
        Element nowEle = null;
        if (preEle == null) {
            //说明现在获取的是根元素
            context.setPreEle(context.getDocument().getDocumentElement());
        } else {
            //根据父级元素和要查找的元素的名称来获取当前的元素
            nowEle = context.getNowEle(preEle, eleName);
            //把当前获取的元素放到上下文中
            context.setPreEle(nowEle);
        }

        String[] ss = new String[1];
        ss[0] = nowEle.getFirstChild().getNodeValue();
        return ss;
    }
}
